The field of software configuration management (SCM) generally relates to oversight of the development of a software product or products. SCM more specifically relates to identification of the software components to be controlled, structure of the overall product, control over changes to the components, accurate and complete record keeping relating to such components, and a mechanism to audit or verify any actions with respect to such components. Accordingly, SCM relates to the evolution of and access to software components, which is typically performed by teams of developers in geographically diverse locations. Additionally, there are typically many revisions to such software components over time, and multiple software components may be integrated into one or more discrete software products. Accordingly, performance of the requisite SCM functions is usually complex.
Various software suppliers presently offer SCM software that performs certain SCM functions. Generally, such SCM software facilitates communication between software developers and enhances workflow by tracking changes to artifacts stored via the SCM software in an SCM repository (i.e., database). Such artifacts include a broad range of software/digital assets, including computer files in a variety of formats, such as programming language (COBOL, C, Java, etc.), source code, HTML files, XML files, ASCII text files, executable (*.exe) files, etc. For example, such software may identify source code files by name, corresponding versions and changes, associated programs that use such source code, programmers having developed such source code, how to compile the source code to an executable format, etc.
Applicant has recognized that management of the intellectual property aspects of artifacts in an SCM repository is overly burdensome or non-existent, particularly when the artifacts are written, used or modified by numerous parties, and originate from various entities (e.g., pre-existing open source code, proprietary internally developed code, and proprietary externally developed code). Such intellectual property aspects include providing notice of a license agreement applicable to an artifact, identifying the terms of conditions of such a license agreement, a notice of any applicable intellectual property protection, such as copyright or patent protection, and/or other proprietary/informational notices. Applicant has further recognized that SCM software of the prior art is inadequate with respect to management of the intellectual property aspects of such artifacts. Still further, Applicant has recognized that prior art SCM software is incapable of tracking and providing notice of such intellectual property aspects as they relate to software products incorporating one or more of such artifacts. To date, programmers have been responsible for manually tracking intellectual property aspects of such artifacts, for providing appropriate notices by manually hard coding such notices into the artifact, manually noting whether there are any applicable intellectual property considerations, etc. This approach is prone to human error in performance and lack of performance, lacks uniformity, and makes it extremely difficult to update artifacts to reflect a revision to a particular license agreement, etc. because it necessitates a change in every artifact to which the license agreement applies. Furthermore, it renders it extremely burdensome to ensure compliance with applicable license provisions, copyright notices, etc. when releasing a new software product, because license provisions/notices hard coded into any artifacts incorporated into the software product are likely out of date, inaccurate, or missing altogether. This often necessitates a manually intensive audit of the software product to identify any artifacts incorporated therein, any applicable licenses and notices, and any updated/current versions of such licenses and notices.